今天,我們來看一下一個九九乘法表,到底可以用多少方式來撰寫
當然,最簡單而且最常見是用兩個for loop來撰寫
兩個for loop代表兩個變數,因此九九乘法表最常見就是for loop
int main(){
    for(int y=1;y<=9;y++){
      for(int x=1;x<=9;x++){
         printf("%d*%d=%d\t",y,x,y*x );
         }
      printf("\n");
      }
return 0;
}

======================分格線======================
可以用兩個for loop來完成,當然也可以用2個while loop來達到目的
int y=1;
int x=1;
int main(){
    while (y<=9){
      while (x<=9){
         printf("%d*%d=%d\t",y,x,y*x );
         x++;
         }
      y++;
      x=1;
      printf("\n");
      }
return 0;
}

要小心while loop只有條件判斷,因此要記得補加變數的初始值跟更新值
======================分格線======================
前後順暢更改一下,while loop就可以更改為do...while loop
int y=1;
int x=1;
int main(){
    do{
      do{
         printf("%d*%d=%d\t",y,x,y*x );
         x++;
         }while (x<=9);
      y++;
      x=1;
      printf("\n");
      }while (y<=9);
return 0;
}

while跟do...while loop,兩者最大分別是:前者會先條件判斷,後者會先執行一次再作條件判斷
======================分格線======================
for、while、do...while一定要同時一對使用嗎?
int main(){
for(int y=1,x=1; y<=9 ;x++){
printf("%d*%d=%d\t",y,x,y*x);
x<9 ? x:(x=0,y++,printf("\n"));
}
return 0;
}

加一個三元運算子,就可以離開新手村出去打大魔王了
======================分格線======================
可以用1個for loop完成,當然也可以用1個while loop來完成
int y=1;
int x=1;
int main(){
while(y<=9){
printf("%d*%d=%d\t",y,x,y*x);
x<9 ? x++:(x=1,y++,printf("\n"));
}
return 0;
}

======================分格線======================
while loop可以,同樣道理do...while loop也是沒問題了
int y=1;
int x=1;
int main(){
do{
printf("%d*%d=%d\t",y,x,y*x);
x<9 ? x++:(x=1,y++,printf("\n"));
}while(y<=9);
return 0;
}

======================分格線======================
3個常用的loop已經用完了
那我們就看看有沒有其他方式來達到目的
第四種方式,我們可以return方式呼叫自己
int y=1;
int x=1;
int main(){
    if(x<=9 && y<=9){
       printf("%d*%d=%d\t",y,x,x*y);
       x++;
       }
    if(x>9){
       x=1;
       y++;
       printf("\n");
    }
return main();
}

但這種方式會不停執行,因此必定會出現「stopped working」
因此不建議這樣做。
======================分格線======================
接下來,就是最大膽的語法,goto
int y=1;
int x=1;
int main(){
 LOOP: if(x<=9 && y<=9){
       printf("%d*%d=%d\t",y,x,x*y);
       x++;
       }
    if(x>9){
       x=1;
       y++;
       printf("\n");
    }
goto LOOP;
return 0;
}

在這裡的return 0是不會執行,但為了良好的習慣,還是要加上去
======================分格線======================
接下來,就是不太常見的遞迴
int x=1;
int y=1;
int table (int x, int y){
    if (x<=9){
        if (y<=9){
            printf("%d*%d=%2d\t",x,y,x*y);
            table(x,y+1);
            }
        else{
            printf("\n");
            x++;
            table(x,1);
            }   }   }
int main() {
    table(x, y);
    return 0;
}

這方式有點近似main呼叫main,只是改為function呼叫function
======================分格線======================
結論:
「方法很多種,但答案只有一個。」一個簡單的九九乘法表至少可以用9種方式來完成。
每一種方法都有優缺點,有執行速度快、有易理解、佔用記憶體少...大家可以按需要來達到不同目的